Customers may execute distributed applications in a service provider environment. A distributed application (e.g., a web service application) may include various application components that are stored across multiple servers in the service provider environment. The application components may interact with each other to achieve a common goal associated with the distributed application. For example, the application components may communicate with each other and/or coordinate their actions by passing messages between the application components. As an example, an application component in the distributed application may generate a message for consumption by another application component in the distributed application.
In one example, the service provider environment may operate a messaging service that maintains a message queue. The message queue may be a repository that stores and communicates messages for the application components of the distributed application. For example, the message queue may store messages that are waiting to be processed by other application components. Rather than the application components directly sending messages to each other, the messaging service can function as a broker that provides a software and/or hardware infrastructure to support the sending and receiving of messages between the application components.
The messaging service may provide a reliable, fail-safe and scalable hosted message queue, and the implementation of the message queue may result in various advantages for the distributed application. For example, the message queue may be redundantly stored across multiple geographic regions in the service provider environment to increase robustness. The message queue may provide message storage when destination application components are busy or unavailable. In addition, the message queue may enable multiple application components to simultaneously send and/or receive messages.